package com.srwl.mytx.im;


import com.srwl.mytx.domain.Message;

import java.util.List;

public interface MessageHandler {

    /**
     * 根据不同的消息类型，做处理
     * 图片 语音 视频 设置消息为发送者，显示到消息列表中，上传 文件，上传完成后，拿到远程url,写入消息的 content,再发出
     * <p>
     * 其他消息类型直接发出
     *
     * @param message
     */
    void sendMessage(Message message);

    void sendMessageReadAck(Message message);

    void saveMessage(Message message);

    void updateMessage(Message message);

    void setLocalMessageRead(String messageId);

    /**
     * 设置会话的所有消息读取状态为已读
     * @param conversationId
     */
    void setMessageReadByConversationId(String conversationId);

    void setMessageSendState(Message message);

    void saveMessage(List<Message> messages);

    boolean deleteMessage(Message message);

    void deleteMessage(String messageId);

    boolean deleteMessage(List<Message> messages);

    /**
     * 根据 会话id 删除所有消息
     *
     * @param conversationId
     * @return
     */
    boolean deleteAllMessage(String conversationId);

    /**
     * 根据会话id 查询该会话下的消息总数
     * @param conversationId
     * @return
     */
    int queryMessageSizeByConversationId(String conversationId);

    List<Message> loadMoreMessage(int offset, int size, String conversationId);

    Message loadLastMessage(String conversationId);

    /**
     * 查询发送中或者发送失败的消息
     * @return
     */
    List<Message> loadSentFailOrSendingMessageList();

    /**
     * 调用发出声音控件,发出声音
     */
    void vibrateAndPlayTone();


    int queryUnreadCount(String conversationId);
}
